0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 3 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳10 CpxRNTS
↳11 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳12 CpxRNTS
↳13 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 IntTrsBoundProof (UPPER BOUND(ID), 1673 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 420 ms)
↳18 CpxRNTS
↳19 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 3033 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 841 ms)
↳24 CpxRNTS
↳25 FinalProof (⇔, 0 ms)
↳26 BOUNDS(1, n^1)
group3(@l) → group3#1(@l)
group3#1(::(@x, @xs)) → group3#2(@xs, @x)
group3#1(nil) → nil
group3#2(::(@y, @ys), @x) → group3#3(@ys, @x, @y)
group3#2(nil, @x) → nil
group3#3(::(@z, @zs), @x, @y) → ::(tuple#3(@x, @y, @z), group3(@zs))
group3#3(nil, @x, @y) → nil
zip3(@l1, @l2, @l3) → zip3#1(@l1, @l2, @l3)
zip3#1(::(@x, @xs), @l2, @l3) → zip3#2(@l2, @l3, @x, @xs)
zip3#1(nil, @l2, @l3) → nil
zip3#2(::(@y, @ys), @l3, @x, @xs) → zip3#3(@l3, @x, @xs, @y, @ys)
zip3#2(nil, @l3, @x, @xs) → nil
zip3#3(::(@z, @zs), @x, @xs, @y, @ys) → ::(tuple#3(@x, @y, @z), zip3(@xs, @ys, @zs))
zip3#3(nil, @x, @xs, @y, @ys) → nil
group3(@l) → group3#1(@l) [1]
group3#1(::(@x, @xs)) → group3#2(@xs, @x) [1]
group3#1(nil) → nil [1]
group3#2(::(@y, @ys), @x) → group3#3(@ys, @x, @y) [1]
group3#2(nil, @x) → nil [1]
group3#3(::(@z, @zs), @x, @y) → ::(tuple#3(@x, @y, @z), group3(@zs)) [1]
group3#3(nil, @x, @y) → nil [1]
zip3(@l1, @l2, @l3) → zip3#1(@l1, @l2, @l3) [1]
zip3#1(::(@x, @xs), @l2, @l3) → zip3#2(@l2, @l3, @x, @xs) [1]
zip3#1(nil, @l2, @l3) → nil [1]
zip3#2(::(@y, @ys), @l3, @x, @xs) → zip3#3(@l3, @x, @xs, @y, @ys) [1]
zip3#2(nil, @l3, @x, @xs) → nil [1]
zip3#3(::(@z, @zs), @x, @xs, @y, @ys) → ::(tuple#3(@x, @y, @z), zip3(@xs, @ys, @zs)) [1]
zip3#3(nil, @x, @xs, @y, @ys) → nil [1]
group3(@l) → group3#1(@l) [1]
group3#1(::(@x, @xs)) → group3#2(@xs, @x) [1]
group3#1(nil) → nil [1]
group3#2(::(@y, @ys), @x) → group3#3(@ys, @x, @y) [1]
group3#2(nil, @x) → nil [1]
group3#3(::(@z, @zs), @x, @y) → ::(tuple#3(@x, @y, @z), group3(@zs)) [1]
group3#3(nil, @x, @y) → nil [1]
zip3(@l1, @l2, @l3) → zip3#1(@l1, @l2, @l3) [1]
zip3#1(::(@x, @xs), @l2, @l3) → zip3#2(@l2, @l3, @x, @xs) [1]
zip3#1(nil, @l2, @l3) → nil [1]
zip3#2(::(@y, @ys), @l3, @x, @xs) → zip3#3(@l3, @x, @xs, @y, @ys) [1]
zip3#2(nil, @l3, @x, @xs) → nil [1]
zip3#3(::(@z, @zs), @x, @xs, @y, @ys) → ::(tuple#3(@x, @y, @z), zip3(@xs, @ys, @zs)) [1]
zip3#3(nil, @x, @xs, @y, @ys) → nil [1]
group3 :: :::nil → :::nil group3#1 :: :::nil → :::nil :: :: tuple#3 → :::nil → :::nil group3#2 :: :::nil → tuple#3 → :::nil nil :: :::nil group3#3 :: :::nil → tuple#3 → tuple#3 → :::nil tuple#3 :: tuple#3 → tuple#3 → tuple#3 → tuple#3 zip3 :: :::nil → :::nil → :::nil → :::nil zip3#1 :: :::nil → :::nil → :::nil → :::nil zip3#2 :: :::nil → :::nil → tuple#3 → :::nil → :::nil zip3#3 :: :::nil → tuple#3 → :::nil → tuple#3 → :::nil → :::nil |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
group3
group3#1
group3#2
group3#3
zip3
zip3#1
zip3#2
zip3#3
const
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
nil => 0
const => 0
group3(z) -{ 1 }→ group3#1(@l) :|: z = @l, @l >= 0
group3#1(z) -{ 1 }→ group3#2(@xs, @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0
group3#1(z) -{ 1 }→ 0 :|: z = 0
group3#2(z, z') -{ 1 }→ group3#3(@ys, @x, @y) :|: z = 1 + @y + @ys, @x >= 0, @y >= 0, z' = @x, @ys >= 0
group3#2(z, z') -{ 1 }→ 0 :|: @x >= 0, z = 0, z' = @x
group3#3(z, z', z'') -{ 1 }→ 0 :|: @x >= 0, z = 0, @y >= 0, z' = @x, z'' = @y
group3#3(z, z', z'') -{ 1 }→ 1 + (1 + @x + @y + @z) + group3(@zs) :|: @x >= 0, z = 1 + @z + @zs, @zs >= 0, @y >= 0, z' = @x, z'' = @y, @z >= 0
zip3(z, z', z'') -{ 1 }→ zip3#1(@l1, @l2, @l3) :|: @l1 >= 0, z' = @l2, @l2 >= 0, @l3 >= 0, z = @l1, z'' = @l3
zip3#1(z, z', z'') -{ 1 }→ zip3#2(@l2, @l3, @x, @xs) :|: z' = @l2, @x >= 0, z = 1 + @x + @xs, @l2 >= 0, @l3 >= 0, @xs >= 0, z'' = @l3
zip3#1(z, z', z'') -{ 1 }→ 0 :|: z' = @l2, @l2 >= 0, @l3 >= 0, z'' = @l3, z = 0
zip3#2(z, z', z'', z1) -{ 1 }→ zip3#3(@l3, @x, @xs, @y, @ys) :|: z = 1 + @y + @ys, @x >= 0, @l3 >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, z' = @l3, @ys >= 0
zip3#2(z, z', z'', z1) -{ 1 }→ 0 :|: @x >= 0, @l3 >= 0, z1 = @xs, @xs >= 0, z = 0, z'' = @x, z' = @l3
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 0 :|: @x >= 0, z1 = @y, @xs >= 0, z2 = @ys, z = 0, @y >= 0, z' = @x, z'' = @xs, @ys >= 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 1 + (1 + @x + @y + @z) + zip3(@xs, @ys, @zs) :|: @x >= 0, z1 = @y, @xs >= 0, z2 = @ys, z = 1 + @z + @zs, @zs >= 0, @y >= 0, z' = @x, z'' = @xs, @ys >= 0, @z >= 0
group3(z) -{ 1 }→ group3#1(z) :|: z >= 0
group3#1(z) -{ 1 }→ group3#2(@xs, @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0
group3#1(z) -{ 1 }→ 0 :|: z = 0
group3#2(z, z') -{ 1 }→ group3#3(@ys, z', @y) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0
group3#2(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
group3#3(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z = 0, z'' >= 0
group3#3(z, z', z'') -{ 1 }→ 1 + (1 + z' + z'' + @z) + group3(@zs) :|: z' >= 0, z = 1 + @z + @zs, @zs >= 0, z'' >= 0, @z >= 0
zip3(z, z', z'') -{ 1 }→ zip3#1(z, z', z'') :|: z >= 0, z' >= 0, z'' >= 0
zip3#1(z, z', z'') -{ 1 }→ zip3#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, z'' >= 0, @xs >= 0
zip3#1(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0
zip3#2(z, z', z'', z1) -{ 1 }→ zip3#3(z', z'', z1, @y, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z' >= 0, z1 >= 0, @y >= 0, @ys >= 0
zip3#2(z, z', z'', z1) -{ 1 }→ 0 :|: z'' >= 0, z' >= 0, z1 >= 0, z = 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0, z2 >= 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 1 + (1 + z' + z1 + @z) + zip3(z'', z2, @zs) :|: z' >= 0, z'' >= 0, z = 1 + @z + @zs, @zs >= 0, z1 >= 0, z2 >= 0, @z >= 0
{ group3#2, group3#1, group3, group3#3 } { zip3#3, zip3#2, zip3#1, zip3 } |
group3(z) -{ 1 }→ group3#1(z) :|: z >= 0
group3#1(z) -{ 1 }→ group3#2(@xs, @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0
group3#1(z) -{ 1 }→ 0 :|: z = 0
group3#2(z, z') -{ 1 }→ group3#3(@ys, z', @y) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0
group3#2(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
group3#3(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z = 0, z'' >= 0
group3#3(z, z', z'') -{ 1 }→ 1 + (1 + z' + z'' + @z) + group3(@zs) :|: z' >= 0, z = 1 + @z + @zs, @zs >= 0, z'' >= 0, @z >= 0
zip3(z, z', z'') -{ 1 }→ zip3#1(z, z', z'') :|: z >= 0, z' >= 0, z'' >= 0
zip3#1(z, z', z'') -{ 1 }→ zip3#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, z'' >= 0, @xs >= 0
zip3#1(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0
zip3#2(z, z', z'', z1) -{ 1 }→ zip3#3(z', z'', z1, @y, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z' >= 0, z1 >= 0, @y >= 0, @ys >= 0
zip3#2(z, z', z'', z1) -{ 1 }→ 0 :|: z'' >= 0, z' >= 0, z1 >= 0, z = 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0, z2 >= 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 1 + (1 + z' + z1 + @z) + zip3(z'', z2, @zs) :|: z' >= 0, z'' >= 0, z = 1 + @z + @zs, @zs >= 0, z1 >= 0, z2 >= 0, @z >= 0
group3(z) -{ 1 }→ group3#1(z) :|: z >= 0
group3#1(z) -{ 1 }→ group3#2(@xs, @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0
group3#1(z) -{ 1 }→ 0 :|: z = 0
group3#2(z, z') -{ 1 }→ group3#3(@ys, z', @y) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0
group3#2(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
group3#3(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z = 0, z'' >= 0
group3#3(z, z', z'') -{ 1 }→ 1 + (1 + z' + z'' + @z) + group3(@zs) :|: z' >= 0, z = 1 + @z + @zs, @zs >= 0, z'' >= 0, @z >= 0
zip3(z, z', z'') -{ 1 }→ zip3#1(z, z', z'') :|: z >= 0, z' >= 0, z'' >= 0
zip3#1(z, z', z'') -{ 1 }→ zip3#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, z'' >= 0, @xs >= 0
zip3#1(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0
zip3#2(z, z', z'', z1) -{ 1 }→ zip3#3(z', z'', z1, @y, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z' >= 0, z1 >= 0, @y >= 0, @ys >= 0
zip3#2(z, z', z'', z1) -{ 1 }→ 0 :|: z'' >= 0, z' >= 0, z1 >= 0, z = 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0, z2 >= 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 1 + (1 + z' + z1 + @z) + zip3(z'', z2, @zs) :|: z' >= 0, z'' >= 0, z = 1 + @z + @zs, @zs >= 0, z1 >= 0, z2 >= 0, @z >= 0
group3#2: runtime: ?, size: O(n1) [1 + z + z'] group3#1: runtime: ?, size: O(n1) [z] group3: runtime: ?, size: O(n1) [z] group3#3: runtime: ?, size: O(n1) [1 + z + z' + z''] |
group3(z) -{ 1 }→ group3#1(z) :|: z >= 0
group3#1(z) -{ 1 }→ group3#2(@xs, @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0
group3#1(z) -{ 1 }→ 0 :|: z = 0
group3#2(z, z') -{ 1 }→ group3#3(@ys, z', @y) :|: z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0
group3#2(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
group3#3(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z = 0, z'' >= 0
group3#3(z, z', z'') -{ 1 }→ 1 + (1 + z' + z'' + @z) + group3(@zs) :|: z' >= 0, z = 1 + @z + @zs, @zs >= 0, z'' >= 0, @z >= 0
zip3(z, z', z'') -{ 1 }→ zip3#1(z, z', z'') :|: z >= 0, z' >= 0, z'' >= 0
zip3#1(z, z', z'') -{ 1 }→ zip3#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, z'' >= 0, @xs >= 0
zip3#1(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0
zip3#2(z, z', z'', z1) -{ 1 }→ zip3#3(z', z'', z1, @y, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z' >= 0, z1 >= 0, @y >= 0, @ys >= 0
zip3#2(z, z', z'', z1) -{ 1 }→ 0 :|: z'' >= 0, z' >= 0, z1 >= 0, z = 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0, z2 >= 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 1 + (1 + z' + z1 + @z) + zip3(z'', z2, @zs) :|: z' >= 0, z'' >= 0, z = 1 + @z + @zs, @zs >= 0, z1 >= 0, z2 >= 0, @z >= 0
group3#2: runtime: O(n1) [4 + 4·z], size: O(n1) [1 + z + z'] group3#1: runtime: O(n1) [1 + 4·z], size: O(n1) [z] group3: runtime: O(n1) [2 + 4·z], size: O(n1) [z] group3#3: runtime: O(n1) [1 + 4·z], size: O(n1) [1 + z + z' + z''] |
group3(z) -{ 2 + 4·z }→ s :|: s >= 0, s <= 1 * z, z >= 0
group3#1(z) -{ 5 + 4·@xs }→ s' :|: s' >= 0, s' <= 1 * @xs + 1 * @x + 1, @x >= 0, z = 1 + @x + @xs, @xs >= 0
group3#1(z) -{ 1 }→ 0 :|: z = 0
group3#2(z, z') -{ 2 + 4·@ys }→ s'' :|: s'' >= 0, s'' <= 1 * @ys + 1 * z' + 1 * @y + 1, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0
group3#2(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
group3#3(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z = 0, z'' >= 0
group3#3(z, z', z'') -{ 3 + 4·@zs }→ 1 + (1 + z' + z'' + @z) + s1 :|: s1 >= 0, s1 <= 1 * @zs, z' >= 0, z = 1 + @z + @zs, @zs >= 0, z'' >= 0, @z >= 0
zip3(z, z', z'') -{ 1 }→ zip3#1(z, z', z'') :|: z >= 0, z' >= 0, z'' >= 0
zip3#1(z, z', z'') -{ 1 }→ zip3#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, z'' >= 0, @xs >= 0
zip3#1(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0
zip3#2(z, z', z'', z1) -{ 1 }→ zip3#3(z', z'', z1, @y, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z' >= 0, z1 >= 0, @y >= 0, @ys >= 0
zip3#2(z, z', z'', z1) -{ 1 }→ 0 :|: z'' >= 0, z' >= 0, z1 >= 0, z = 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0, z2 >= 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 1 + (1 + z' + z1 + @z) + zip3(z'', z2, @zs) :|: z' >= 0, z'' >= 0, z = 1 + @z + @zs, @zs >= 0, z1 >= 0, z2 >= 0, @z >= 0
group3#2: runtime: O(n1) [4 + 4·z], size: O(n1) [1 + z + z'] group3#1: runtime: O(n1) [1 + 4·z], size: O(n1) [z] group3: runtime: O(n1) [2 + 4·z], size: O(n1) [z] group3#3: runtime: O(n1) [1 + 4·z], size: O(n1) [1 + z + z' + z''] |
group3(z) -{ 2 + 4·z }→ s :|: s >= 0, s <= 1 * z, z >= 0
group3#1(z) -{ 5 + 4·@xs }→ s' :|: s' >= 0, s' <= 1 * @xs + 1 * @x + 1, @x >= 0, z = 1 + @x + @xs, @xs >= 0
group3#1(z) -{ 1 }→ 0 :|: z = 0
group3#2(z, z') -{ 2 + 4·@ys }→ s'' :|: s'' >= 0, s'' <= 1 * @ys + 1 * z' + 1 * @y + 1, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0
group3#2(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
group3#3(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z = 0, z'' >= 0
group3#3(z, z', z'') -{ 3 + 4·@zs }→ 1 + (1 + z' + z'' + @z) + s1 :|: s1 >= 0, s1 <= 1 * @zs, z' >= 0, z = 1 + @z + @zs, @zs >= 0, z'' >= 0, @z >= 0
zip3(z, z', z'') -{ 1 }→ zip3#1(z, z', z'') :|: z >= 0, z' >= 0, z'' >= 0
zip3#1(z, z', z'') -{ 1 }→ zip3#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, z'' >= 0, @xs >= 0
zip3#1(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0
zip3#2(z, z', z'', z1) -{ 1 }→ zip3#3(z', z'', z1, @y, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z' >= 0, z1 >= 0, @y >= 0, @ys >= 0
zip3#2(z, z', z'', z1) -{ 1 }→ 0 :|: z'' >= 0, z' >= 0, z1 >= 0, z = 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0, z2 >= 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 1 + (1 + z' + z1 + @z) + zip3(z'', z2, @zs) :|: z' >= 0, z'' >= 0, z = 1 + @z + @zs, @zs >= 0, z1 >= 0, z2 >= 0, @z >= 0
group3#2: runtime: O(n1) [4 + 4·z], size: O(n1) [1 + z + z'] group3#1: runtime: O(n1) [1 + 4·z], size: O(n1) [z] group3: runtime: O(n1) [2 + 4·z], size: O(n1) [z] group3#3: runtime: O(n1) [1 + 4·z], size: O(n1) [1 + z + z' + z''] zip3#3: runtime: ?, size: O(n1) [1 + z + z' + z'' + z1 + z2] zip3#2: runtime: ?, size: O(n1) [z + z' + z'' + z1] zip3#1: runtime: ?, size: O(n1) [z + z' + z''] zip3: runtime: ?, size: O(n1) [z + z' + z''] |
group3(z) -{ 2 + 4·z }→ s :|: s >= 0, s <= 1 * z, z >= 0
group3#1(z) -{ 5 + 4·@xs }→ s' :|: s' >= 0, s' <= 1 * @xs + 1 * @x + 1, @x >= 0, z = 1 + @x + @xs, @xs >= 0
group3#1(z) -{ 1 }→ 0 :|: z = 0
group3#2(z, z') -{ 2 + 4·@ys }→ s'' :|: s'' >= 0, s'' <= 1 * @ys + 1 * z' + 1 * @y + 1, z = 1 + @y + @ys, z' >= 0, @y >= 0, @ys >= 0
group3#2(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
group3#3(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z = 0, z'' >= 0
group3#3(z, z', z'') -{ 3 + 4·@zs }→ 1 + (1 + z' + z'' + @z) + s1 :|: s1 >= 0, s1 <= 1 * @zs, z' >= 0, z = 1 + @z + @zs, @zs >= 0, z'' >= 0, @z >= 0
zip3(z, z', z'') -{ 1 }→ zip3#1(z, z', z'') :|: z >= 0, z' >= 0, z'' >= 0
zip3#1(z, z', z'') -{ 1 }→ zip3#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, z'' >= 0, @xs >= 0
zip3#1(z, z', z'') -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0
zip3#2(z, z', z'', z1) -{ 1 }→ zip3#3(z', z'', z1, @y, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z' >= 0, z1 >= 0, @y >= 0, @ys >= 0
zip3#2(z, z', z'', z1) -{ 1 }→ 0 :|: z'' >= 0, z' >= 0, z1 >= 0, z = 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 0 :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0, z2 >= 0
zip3#3(z, z', z'', z1, z2) -{ 1 }→ 1 + (1 + z' + z1 + @z) + zip3(z'', z2, @zs) :|: z' >= 0, z'' >= 0, z = 1 + @z + @zs, @zs >= 0, z1 >= 0, z2 >= 0, @z >= 0
group3#2: runtime: O(n1) [4 + 4·z], size: O(n1) [1 + z + z'] group3#1: runtime: O(n1) [1 + 4·z], size: O(n1) [z] group3: runtime: O(n1) [2 + 4·z], size: O(n1) [z] group3#3: runtime: O(n1) [1 + 4·z], size: O(n1) [1 + z + z' + z''] zip3#3: runtime: O(n1) [4 + 4·z2], size: O(n1) [1 + z + z' + z'' + z1 + z2] zip3#2: runtime: O(n1) [1 + 4·z], size: O(n1) [z + z' + z'' + z1] zip3#1: runtime: O(n1) [2 + 4·z'], size: O(n1) [z + z' + z''] zip3: runtime: O(n1) [3 + 4·z'], size: O(n1) [z + z' + z''] |